/**
 *  Copyright (C) 2008-2013  Telosys project org. ( http://www.telosys.org/ )
 *
 *  Licensed under the GNU LESSER GENERAL PUBLIC LICENSE, Version 3.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *          http://www.gnu.org/licenses/lgpl.html
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package org.telosys.common.config;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * Generic abstract ancestor class for configuration loaders 
 * 
 * @author Laurent Guerin
 * @since 1.2.0
 *
 */
public abstract class GenericConfigLoader 
{
	
    //------------------------------------------------------------------------------------------------
    /**
     * Loads the properties from the given InputStream
     * @param is
     * @return the properties
     * @throws Exception
     */
    protected Properties loadPropertiesInputStream ( InputStream is  ) throws Exception
    {
        Properties prop = null;
        if ( is != null )
        {            
            prop = new Properties();
            try
            {
                prop.load(is);
            } catch (IOException ex)
            {
            	throw new Exception("loadPropertiesInputStream() : IOException : ", ex);
	        } finally
	        {
                try {
                       is.close();
                } catch (IOException ex) {}
	        }
        }
        else
        {
        	throw new Exception("Cannot load properties InputStream is null.");
        }
        return prop ;
    }

}
